//! 天气相关字符集
//! 
//! 包含各种天气现象、季节、温度等相关的字符和图标

use std::collections::HashMap;
use crate::CharacterSet;

/// 获取天气相关字符集
pub fn get_weather_characters() -> HashMap<String, CharacterSet> {
    let mut characters = HashMap::new();

    // 太阳和晴天
    characters.insert("sunny".to_string(),
        CharacterSet::new()
            .simple("☀")
            .icon("☀️")
            .bold("☀")
    );

    characters.insert("clear".to_string(),
        CharacterSet::new()
            .simple("☀")
            .icon("☀️")
            .bold("☀")
    );

    characters.insert("sun".to_string(),
        CharacterSet::new()
            .simple("☀")
            .icon("☀️")
            .bold("☀")
    );

    characters.insert("day".to_string(),
        CharacterSet::new()
            .simple("☀")
            .icon("☀️")
            .bold("☀")
    );

    // 月亮和夜晚
    characters.insert("moon".to_string(),
        CharacterSet::new()
            .simple("☽")
            .icon("🌙")
            .bold("☽")
    );

    characters.insert("night".to_string(),
        CharacterSet::new()
            .simple("🌙")
            .icon("🌙")
            .bold("🌙")
    );

    characters.insert("crescent".to_string(),
        CharacterSet::new()
            .simple("🌙")
            .icon("🌙")
            .bold("🌙")
    );

    characters.insert("full_moon".to_string(),
        CharacterSet::new()
            .simple("🌕")
            .icon("🌕")
            .bold("🌕")
    );

    // 云朵
    characters.insert("cloud".to_string(),
        CharacterSet::new()
            .simple("☁")
            .icon("☁️")
            .bold("☁")
    );

    characters.insert("cloudy".to_string(),
        CharacterSet::new()
            .simple("☁")
            .icon("☁️")
            .bold("☁")
    );

    characters.insert("overcast".to_string(),
        CharacterSet::new()
            .simple("☁")
            .icon("☁️")
            .bold("☁")
    );

    characters.insert("partly_cloudy".to_string(),
        CharacterSet::new()
            .simple("⛅")
            .icon("⛅")
            .bold("⛅")
    );

    characters.insert("mostly_cloudy".to_string(),
        CharacterSet::new()
            .simple("☁")
            .icon("☁️")
            .bold("☁")
    );

    // 雨
    characters.insert("rain".to_string(),
        CharacterSet::new()
            .simple("🌧")
            .icon("🌧️")
            .bold("🌧")
    );

    characters.insert("rainy".to_string(),
        CharacterSet::new()
            .simple("🌧")
            .icon("🌧️")
            .bold("🌧")
    );

    characters.insert("drizzle".to_string(),
        CharacterSet::new()
            .simple("🌦")
            .icon("🌦️")
            .bold("🌦")
    );

    characters.insert("shower".to_string(),
        CharacterSet::new()
            .simple("🌦")
            .icon("🌦️")
            .bold("🌦")
    );

    characters.insert("storm".to_string(),
        CharacterSet::new()
            .simple("⛈")
            .icon("⛈️")
            .bold("⛈")
    );

    characters.insert("thunderstorm".to_string(),
        CharacterSet::new()
            .simple("⛈")
            .icon("⛈️")
            .bold("⛈")
    );

    // 雪
    characters.insert("snow".to_string(),
        CharacterSet::new()
            .simple("❄")
            .icon("❄️")
            .bold("❄")
    );

    characters.insert("snowy".to_string(),
        CharacterSet::new()
            .simple("❄")
            .icon("❄️")
            .bold("❄")
    );

    characters.insert("snowflake".to_string(),
        CharacterSet::new()
            .simple("❄")
            .icon("❄️")
            .bold("❄")
    );

    characters.insert("blizzard".to_string(),
        CharacterSet::new()
            .simple("🌨")
            .icon("🌨️")
            .bold("🌨")
    );

    characters.insert("sleet".to_string(),
        CharacterSet::new()
            .simple("🌨")
            .icon("🌨️")
            .bold("🌨")
    );

    // 风
    characters.insert("wind".to_string(),
        CharacterSet::new()
            .simple("💨")
            .icon("💨")
            .bold("💨")
    );

    characters.insert("windy".to_string(),
        CharacterSet::new()
            .simple("💨")
            .icon("💨")
            .bold("💨")
    );

    characters.insert("breeze".to_string(),
        CharacterSet::new()
            .simple("💨")
            .icon("💨")
            .bold("💨")
    );

    characters.insert("gust".to_string(),
        CharacterSet::new()
            .simple("💨")
            .icon("💨")
            .bold("💨")
    );

    // 雾
    characters.insert("fog".to_string(),
        CharacterSet::new()
            .simple("🌫")
            .icon("🌫️")
            .bold("🌫")
    );

    characters.insert("foggy".to_string(),
        CharacterSet::new()
            .simple("🌫")
            .icon("🌫️")
            .bold("🌫")
    );

    characters.insert("mist".to_string(),
        CharacterSet::new()
            .simple("🌫")
            .icon("🌫️")
            .bold("🌫")
    );

    characters.insert("haze".to_string(),
        CharacterSet::new()
            .simple("🌫")
            .icon("🌫️")
            .bold("🌫")
    );

    // 温度
    characters.insert("hot".to_string(),
        CharacterSet::new()
            .simple("🔥")
            .icon("🔥")
            .bold("🔥")
    );

    characters.insert("warm".to_string(),
        CharacterSet::new()
            .simple("🌡")
            .icon("🌡️")
            .bold("🌡")
    );

    characters.insert("cool".to_string(),
        CharacterSet::new()
            .simple("🌡")
            .icon("🌡️")
            .bold("🌡")
    );

    characters.insert("cold".to_string(),
        CharacterSet::new()
            .simple("🧊")
            .icon("🧊")
            .bold("🧊")
    );

    characters.insert("freezing".to_string(),
        CharacterSet::new()
            .simple("🧊")
            .icon("🧊")
            .bold("🧊")
    );

    characters.insert("temperature".to_string(),
        CharacterSet::new()
            .simple("🌡")
            .icon("🌡️")
            .bold("🌡")
    );

    characters.insert("thermometer".to_string(),
        CharacterSet::new()
            .simple("🌡")
            .icon("🌡️")
            .bold("🌡")
    );

    // 季节
    characters.insert("spring".to_string(),
        CharacterSet::new()
            .simple("🌸")
            .icon("🌸")
            .bold("🌸")
    );

    characters.insert("summer".to_string(),
        CharacterSet::new()
            .simple("☀")
            .icon("☀️")
            .bold("☀")
    );

    characters.insert("autumn".to_string(),
        CharacterSet::new()
            .simple("🍂")
            .icon("🍂")
            .bold("🍂")
    );

    characters.insert("fall".to_string(),
        CharacterSet::new()
            .simple("🍂")
            .icon("🍂")
            .bold("🍂")
    );

    characters.insert("winter".to_string(),
        CharacterSet::new()
            .simple("❄")
            .icon("❄️")
            .bold("❄")
    );

    // 特殊天气现象
    characters.insert("rainbow".to_string(),
        CharacterSet::new()
            .simple("🌈")
            .icon("🌈")
            .bold("🌈")
    );

    characters.insert("tornado".to_string(),
        CharacterSet::new()
            .simple("🌪")
            .icon("🌪️")
            .bold("🌪")
    );

    characters.insert("hurricane".to_string(),
        CharacterSet::new()
            .simple("🌀")
            .icon("🌀")
            .bold("🌀")
    );

    characters.insert("typhoon".to_string(),
        CharacterSet::new()
            .simple("🌀")
            .icon("🌀")
            .bold("🌀")
    );

    characters.insert("cyclone".to_string(),
        CharacterSet::new()
            .simple("🌀")
            .icon("🌀")
            .bold("🌀")
    );

    characters.insert("lightning".to_string(),
        CharacterSet::new()
            .simple("⚡")
            .icon("⚡")
            .bold("⚡")
    );

    characters.insert("thunder".to_string(),
        CharacterSet::new()
            .simple("⚡")
            .icon("⚡")
            .bold("⚡")
    );

    // 湿度
    characters.insert("humid".to_string(),
        CharacterSet::new()
            .simple("💧")
            .icon("💧")
            .bold("💧")
    );

    characters.insert("humidity".to_string(),
        CharacterSet::new()
            .simple("💧")
            .icon("💧")
            .bold("💧")
    );

    characters.insert("dry".to_string(),
        CharacterSet::new()
            .simple("🏜")
            .icon("🏜️")
            .bold("🏜")
    );

    characters.insert("arid".to_string(),
        CharacterSet::new()
            .simple("🏜")
            .icon("🏜️")
            .bold("🏜")
    );

    // 气压
    characters.insert("high_pressure".to_string(),
        CharacterSet::new()
            .simple("H")
            .icon("H")
            .bold("H")
    );

    characters.insert("low_pressure".to_string(),
        CharacterSet::new()
            .simple("L")
            .icon("L")
            .bold("L")
    );

    characters.insert("pressure".to_string(),
        CharacterSet::new()
            .simple("📊")
            .icon("📊")
            .bold("📊")
    );

    // 能见度
    characters.insert("visibility".to_string(),
        CharacterSet::new()
            .simple("👁")
            .icon("👁️")
            .bold("👁")
    );

    characters.insert("clear_visibility".to_string(),
        CharacterSet::new()
            .simple("👁")
            .icon("👁️")
            .bold("👁")
    );

    characters.insert("poor_visibility".to_string(),
        CharacterSet::new()
            .simple("🌫")
            .icon("🌫️")
            .bold("🌫")
    );

    // 天气警告
    characters.insert("weather_warning".to_string(),
        CharacterSet::new()
            .simple("⚠")
            .icon("⚠️")
            .bold("⚠")
    );

    characters.insert("storm_warning".to_string(),
        CharacterSet::new()
            .simple("⛈")
            .icon("⛈️")
            .bold("⛈")
    );

    characters.insert("flood_warning".to_string(),
        CharacterSet::new()
            .simple("🌊")
            .icon("🌊")
            .bold("🌊")
    );

    characters.insert("heat_warning".to_string(),
        CharacterSet::new()
            .simple("🔥")
            .icon("🔥")
            .bold("🔥")
    );

    characters.insert("cold_warning".to_string(),
        CharacterSet::new()
            .simple("🧊")
            .icon("🧊")
            .bold("🧊")
    );

    // 天气工具
    characters.insert("umbrella".to_string(),
        CharacterSet::new()
            .simple("☂")
            .icon("☂️")
            .bold("☂")
    );

    characters.insert("raincoat".to_string(),
        CharacterSet::new()
            .simple("🧥")
            .icon("🧥")
            .bold("🧥")
    );

    characters.insert("sunglasses".to_string(),
        CharacterSet::new()
            .simple("🕶")
            .icon("🕶️")
            .bold("🕶")
    );

    characters.insert("sunscreen".to_string(),
        CharacterSet::new()
            .simple("🧴")
            .icon("🧴")
            .bold("🧴")
    );

    characters
}
